//#define _CRT_SECURE_NO_WARNINGS 1
//
//
//#include <vector>
//class Solution {
//    int left = 0;
//    int right = 0;
//    int N;
//    string path;
//    vector<string> ret;
//public:
//    vector<string> generateParenthesis(int n) {
//        N = n;
//        dfs();
//        return ret;
//    }
//    void dfs() {
//        if (right == N) {
//            ret.push_back(path);
//        }
//        if (left < N) {
//            path.push_back('(');
//            left++;
//            dfs();
//            path.pop_back();
//            left--;
//        }
//        if (right < left) {
//            path.push_back(')');
//            right++;
//            dfs();
//            path.pop_back();
//            right--;
//        }
//    }
//};